package cn.jxau.common.util;

import java.io.File;
import java.io.IOException;

import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

/**
 * 和web开发相关的一些工具
 * @author licho
 *
 */
public class WebTools {
	private static final Logger log=Logger.getLogger(WebTools.class);
	public static String saveFile(MultipartFile file){
		final StringBuilder finalName=new StringBuilder();
		String originalName=file.getOriginalFilename();
		String fileSubfix=originalName.substring(originalName.lastIndexOf('.')+1);//获取文件名后缀
		if(fileSubfix==null){
			log.debug("未知文件类型");
			return null;
		}
		finalName.append(ProUtils.getProperty("file.save"));
		finalName.append("/"+getRandomStr()+"."+fileSubfix);
		String fileName=finalName.toString();
		log.debug("最终文件名为:"+fileName);
		BaseFileRelativeUtil.makeFile(new File(fileName));//确保文件存在
		try {
			file.transferTo(new File(fileName));
		} catch (IllegalStateException e) {
			log.debug("转化文件发生未知异常");
		} catch (IOException e) {
			log.debug("文件存放失败！");
		}//存入文件
		return fileName;
		
	}
	
	/**
	 * 获取随机字符串用以生成文件名
	 * @return
	 */
	private static String getRandomStr(){
		return IPTimeStamp.getIPTime();
	}
	
	/**
	 * 按照默认路径来存放文件，默认路径为file.save
	 * @param file
	 * @return
	 */
	public static FileUpload saveFileResultWithFileUpload(MultipartFile file){
		FileUploadImpl impl=new FileUploadImpl(file);
		return impl;
	}
	
	/**
	 * 按照指定文件来存放文件。
	 * @param file
	 * @param basePath
	 * @return
	 */
	public static FileUpload saveFileResultWithFileUpload(MultipartFile file,String basePath){
		FileUploadImpl impl=new FileUploadImpl(file,basePath);
		return impl;
	}

}
